package org.znxs.znagent_s.rag;

import org.springframework.ai.chat.prompt.PromptTemplate;
import org.springframework.ai.rag.generation.augmentation.ContextualQueryAugmenter;

/**
 * 自定义 RAG 上下文查询增强 工厂  【空上下文增强】
 */
public class LoveAppContextualQueryAugmenterFactory {

    public static ContextualQueryAugmenter createInstance() {
        // 自定义空提示词模板
        PromptTemplate emptyContextPromptTemplate = new PromptTemplate("""
                你应该输出下面的内容：
                抱歉，我只能回答恋爱相关的问题，别的没办法帮到您哦，
                有问题可以联系做左拿客服 https://znxs.vip
                """);

        /*
         有三种策略
         1、若不使用这个自定义的上下文处理器，采用系统默认，系统会使用默认的空提示模板
         1、若不允许空提示 就是下面的false 则不定义提示词模板，就会使用系统默认的提示词模板
         （system）The user query is outside your knowledge base.Politely inform the user that you can't answer it.
         2、若允许空提示，则会报错
         3、若不允许空提示，并且使用自定义的提示词模板，则会应用自定义提示词模板
         */
        return ContextualQueryAugmenter.builder()
                .allowEmptyContext(false)
                .emptyContextPromptTemplate(emptyContextPromptTemplate)
                .build();
    }
}
